home *** CD-ROM | disk | FTP | other *** search
/ Team Palmtops 7 / Palmtops_numero07.iso / WinCE / SDKWindowsCE / HandHeldPCPro30 / sdk.exe / Jupiter SDK / data1.cab / ATL_Samples / polygon / cppolygn.h next >
Encoding:
C/C++ Source or Header  |  1999-02-19  |  1.5 KB  |  68 lines

  1.  
  2. //////////////////////////////////////////////////////////////////////////////
  3. // CProxy_PolyEvents
  4. template <class T>
  5. class CProxy_PolyEvents : public IConnectionPointImpl<T, &DIID__PolyEvents, CComDynamicUnkArray>
  6. {
  7. public:
  8. //methods:
  9. //_PolyEvents : IDispatch
  10. public:
  11.     void ClickIn(
  12.         long x,
  13.         long y)
  14.     {
  15.         VARIANTARG* pvars = new VARIANTARG[2];
  16.         for (int i = 0; i < 2; i++)
  17.             VariantInit(&pvars[i]);
  18.         T* pT = (T*)this;
  19.         pT->Lock();
  20.         IUnknown** pp = m_vec.begin();
  21.         while (pp < m_vec.end())
  22.         {
  23.             if (*pp != NULL)
  24.             {
  25.                 pvars[1].vt = VT_I4;
  26.                 pvars[1].lVal= x;
  27.                 pvars[0].vt = VT_I4;
  28.                 pvars[0].lVal= y;
  29.                 DISPPARAMS disp = { pvars, NULL, 2, 0 };
  30.                 IDispatch* pDispatch = reinterpret_cast<IDispatch*>(*pp);
  31.                 pDispatch->Invoke(0x1, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, NULL, NULL, NULL);
  32.             }
  33.             pp++;
  34.         }
  35.         pT->Unlock();
  36.         delete[] pvars;
  37.     }
  38.     void ClickOut(
  39.         long x,
  40.         long y)
  41.     {
  42.         VARIANTARG* pvars = new VARIANTARG[2];
  43.         for (int i = 0; i < 2; i++)
  44.             VariantInit(&pvars[i]);
  45.         T* pT = (T*)this;
  46.         pT->Lock();
  47.         IUnknown** pp = m_vec.begin();
  48.         while (pp < m_vec.end())
  49.         {
  50.             if (*pp != NULL)
  51.             {
  52.                 pvars[1].vt = VT_I4;
  53.                 pvars[1].lVal= x;
  54.                 pvars[0].vt = VT_I4;
  55.                 pvars[0].lVal= y;
  56.                 DISPPARAMS disp = { pvars, NULL, 2, 0 };
  57.                 IDispatch* pDispatch = reinterpret_cast<IDispatch*>(*pp);
  58.                 pDispatch->Invoke(0x2, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, NULL, NULL, NULL);
  59.             }
  60.             pp++;
  61.         }
  62.         pT->Unlock();
  63.         delete[] pvars;
  64.     }
  65.  
  66. };
  67.  
  68.